package com.sunday.member.http;

import com.sunday.common.model.ResultDO;
import com.sunday.member.entity.ApkInfo;
import com.sunday.member.entity.Cart;
import com.sunday.member.entity.Dynamic;
import com.sunday.member.entity.Image;

import java.lang.reflect.Array;
import java.util.List;

import okhttp3.RequestBody;
import retrofit2.Call;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.Multipart;
import retrofit2.http.POST;
import retrofit2.http.Part;

/**
 * Created by Administrator on 2016/2/23.
 */
public interface MemberService {
    /******************************************用户相关********************************************/

    /**
     * 通用上传多图接口
     * @param body
     * @return
     */
    @Multipart
    @POST("/mobile/upload/MultiImages")
    Call<ResultDO<List<Image>>> saveImages(@Part("images") RequestBody body);

    /**
     * 上传单张图片
     * @param body
     * @return
     */
    @Multipart
    @POST("/mobile/upload/singleImage")
    Call<ResultDO<Image>> saveImage(@Part("image") RequestBody body);


    /**
     * ossSaveImages
     * @param body
     * @return
     */
    @Multipart
    @POST("/mobile/upload/ossSaveImages")
    Call<ResultDO<List<Image>>> ossSaveImages(@Part("images") RequestBody body);


    /**
     * ossSaveImage
     * @param body
     * @return
     */
    @Multipart
    @POST("/mobile/upload/ossSaveImage")
    Call<ResultDO<Image>> ossSaveImage(@Part("image") RequestBody body);


    /**
     * 多个附件上传（非图片）
     * @param body
     * @return
     */
    @Multipart
    @POST("/mobile/upload/saveFiles")
    Call<ResultDO<List<Image>>> saveFiles(@Part("files") RequestBody body);

    /**
     * 单个附件上传（非图片）
     * @param body
     * @return
     */
    @Multipart
    @POST("/mobile/upload/saveFile")
    Call<ResultDO<Image>> saveFile(@Part("file") RequestBody body);





    /**
     * 删除帖子
     * @param dynamicId 帖子Id
     * @return
     */
    @FormUrlEncoded
    @POST("/mobile/dynamic/deleteDynamic")
    Call<ResultDO> deleteDynamic(@Field("dynamicId") Integer dynamicId);

    /**
     * 发表评论
     * @param parentCommentId 父评论的id 如果是直接评论动态的话传0
     * @return
     */
    @FormUrlEncoded
    @POST("/mobile/dynamic/doComment")
    Call<ResultDO> doComment(@Field("dynamicId") Integer dynamicId,@Field("parentCommentId") Integer parentCommentId,@Field("memberId") Integer memberId,@Field("content") String content,@Field("images") String images);


    /**
     * 帖子点赞
     * @param
     * @return
     */
    @FormUrlEncoded
    @POST("/mobile/dynamic/doGood")
    Call<ResultDO> doGood(@Field("dynamicId") Integer unnionId, @Field("memberId") Integer memberId);

    /**
     * 帖子列表
     * @param catId 分类id   publishId发表人id
     * @return
     */
    @FormUrlEncoded
    @POST("/mobile/dynamic/dynamics")
    Call<ResultDO<List<Dynamic>>> dynamics(@Field("catId") Integer catId, @Field("memberId") Integer memberId, @Field("publishId") Integer publishId , @Field("page") Integer page, @Field("rows") Integer rows);

    /**
     * 发布帖子
     * @param catId 分类id
     * @return
     */
    @FormUrlEncoded
    @POST("/mobile/dynamic/publishDynamic")
    Call<ResultDO<Dynamic>> publishDynamic(@Field("memberId") Integer memberId, @Field("catId") Integer catId, @Field("content") String content, @Field("images") String images);



    /**
     * 根据广告位code获取单一广告
     * @param
     * @return
     */
    @FormUrlEncoded
    @POST("/mobile/ads/getByCode")
    Call<ResultDO> getByCode(@Field("code") String code);


    /**
     * 根据多个广告位code获取一次多个广告
     * @param
     * @return
     */
    @FormUrlEncoded
    @POST("/mobile/ads/getByCodes")
    Call<ResultDO> getByCodes(@Field("code") String code);

    /**
     * 获取版本信息
     * @param
     * @return
     */
    @FormUrlEncoded
    @POST("/mobile/updateVersion/getApkInfo")
    Call<ResultDO<ApkInfo>> getApkInfo(@Field("versionCode") Integer versionCode ,@Field("appCode") String appCode);

    /**
     * 取消收藏 咨询 产品店铺
     * @param id 咨询产品店铺id  type 收藏类型
     * @return
     */
    @FormUrlEncoded
    @POST("/mobile/collect/cancelCollect")
    Call<ResultDO> cancelCollect(@Field("id") Integer id, @Field("userId") Integer userId, @Field("type") Integer type);

    /**
     * 收藏 咨询 产品店铺
     * @param id 咨询产品店铺id  type 收藏类型
     * @return
     */
    @FormUrlEncoded
    @POST("/mobile/collect/collect")
    Call<ResultDO> collect(@Field("id") Integer id, @Field("userId") Integer userId, @Field("type") Integer type);


    /**
     * 活动详情
     * @param activeId 活动id
     * @return
     */
    @FormUrlEncoded
    @POST("/mobile/active/activeDetail")
    Call<ResultDO> activeDetail(@Field("activeId") Integer activeId, @Field("memberId") Integer memberId);

    /**
     * 活动列表
     * @param publishId 发布人id
     * @return
     */
    @FormUrlEncoded
    @POST("/mobile/active/activeList")
    Call<ResultDO> activeList(@Field("memberId") Integer memberId, @Field("publishId") Integer publishId ,@Field("type") Integer type  , @Field("page") Integer page, @Field("rows") Integer rows);

    /**
     * 取消活动报名
     * @param activeId 活动id
     * @return
     */
    @FormUrlEncoded
    @POST("/mobile/active/cancelActiveSign")
    Call<ResultDO> cancelActiveSign(@Field("activeId") Integer activeId, @Field("memberId") Integer memberId);

    /**
     * 活动报名
     * @param activeId 活动id
     * @return
     */
    @FormUrlEncoded
    @POST("/mobile/active/signActive")
    Call<ResultDO> signActive(@Field("activeId") Integer activeId, @Field("memberId") Integer memberId ,@Field("name") String name ,@Field("desc") String desc ,@Field("mobile") String mobile);

    /**
     * 发布活动
     * @param type 活动类型  linkMan 活动联系人 label 活动标签 desc活动描述
     * @return
     */
    @FormUrlEncoded
    @POST("/mobile/active/publishActive")
    Call<ResultDO> publishActive(@Field("type") Integer type, @Field("memberId") Integer memberId , @Field("title") String title, @Field("startTime") String startTime, @Field("endTime") String endTime, @Field("address") String address, @Field("linkMan") String linkMan, @Field("mobile") String mobile, @Field("label") String label, @Field("desc") String desc, @Field("image") String image);


    /**
     * 新增收货地址
     * @param
     * @return
     */
    @FormUrlEncoded
    @POST("/mobile/receiveAddress/add")
    Call<ResultDO> addAddress(@Field("memberId") Integer memberId, @Field("name") String name , @Field("mobile") String mobile, @Field("provinceId") Integer provinceId, @Field("cityId") Integer cityId, @Field("districtId") Integer districtId, @Field("addressDetail") String addressDetail);


    /**
     * 修改收货地址
     * @param
     * @return
     */
    @FormUrlEncoded
    @POST("/mobile/receiveAddress/updateAddress")
    Call<ResultDO> updateAddress(@Field("id") Integer id, @Field("name") String name , @Field("mobile") String mobile, @Field("provinceId") Integer provinceId, @Field("cityId") Integer cityId, @Field("districtId") Integer districtId, @Field("addressDetail") String addressDetail);


    /**
     * 删除收货地址
     * @param
     * @return
     */
    @FormUrlEncoded
    @POST("/mobile/receiveAddress/delete")
    Call<ResultDO> deleteAddress(@Field("id") Integer id);

    /**
     * 获取默认收货地址
     * @param
     * @return
     */
    @FormUrlEncoded
    @POST("/mobile/receiveAddress/getDefault")
    Call<ResultDO> getDefaultAddress(@Field("memberId") Integer memberId);

    /**
     * 收货地址列表
     * @param
     * @return
     */
    @FormUrlEncoded
    @POST("/mobile/receiveAddress/list")
    Call<ResultDO> addressList(@Field("userId") Integer userId);

    /**
     * 设置默认收货地址
     * @param
     * @return
     */
    @FormUrlEncoded
    @POST("/mobile/receiveAddress/setDefault")
    Call<ResultDO> setDefaultAddress(@Field("id") Integer id ,@Field("memberId") Integer memberId);


    /**
     * 获取所有省市区
     * @param  id 传null
     * @return
     */
    @FormUrlEncoded
    @POST("/mobile/receiveAddress/getAll")
    Call<ResultDO> getAll(@Field("id") Integer id);

    /**
     * 获取所有省
     * @param  id 传null
     * @return
     */
    @FormUrlEncoded
    @POST("/mobile/receiveAddress/getProvinces")
    Call<ResultDO> getProvinces(@Field("id") Integer id);

    /**
     * 根据省获取市
     * @param
     * @return
     */
    @FormUrlEncoded
    @POST("/mobile/receiveAddress/getCitys")
    Call<ResultDO> getCitys(@Field("provinceId") Integer provinceId);

    /**
     * 根据市获取区
     * @param
     * @return
     */
    @FormUrlEncoded
    @POST("/mobile/receiveAddress/getDistricts")
    Call<ResultDO> getDistricts(@Field("cityId") Integer cityId);

    /**
     * 保存用户个推参数
     * @param type 暂时不用的参数
     * @return
     */
    @FormUrlEncoded
    @POST("/mobile/feedback/saveToken")
    Call<ResultDO> saveToken(@Field("userId") Integer userId,@Field("token") String token,@Field("uutype") String uutype,@Field("type") String type);

    /**
     * 删除用户个推参数
     * @param
     * @return
     */
    @FormUrlEncoded
    @POST("/mobile/feedback/clearToken")
    Call<ResultDO> clearToken(@Field("userId") Integer userId);

    /**
     * 提交用户意见反馈
     * @param
     * @return
     */
    @FormUrlEncoded
    @POST("/mobile/feedback/submit")
    Call<ResultDO> submit(@Field("name") String name ,@Field("mobile") String mobile ,@Field("content") String content);

    /**
     * 用户提现账户列表
     * @param
     * @return
     */
    @FormUrlEncoded
    @POST("/mobile/bankAccount/list")
    Call<ResultDO> bankAccountList(@Field("memberId") Integer memberId);


    /**
     * 获取用户购物车
     * @param
     * @return
     */
    @FormUrlEncoded
    @POST("/mobile/cart/getCart")
    Call<ResultDO<List<Cart>>> getCart(@Field("memberId") Integer memberId);

    /**
     * 添加至购物车
     * @param
     * @return
     */
    @FormUrlEncoded
    @POST("/mobile/cart/addToCart")
    Call<ResultDO> addToCart(@Field("productId") Long productId,
                             @Field("productNum") Integer productNum,
                             @Field("memberId") Long memberId);
    /**
     * 更新购物车数量
     * @param
     * @return
     */
    @FormUrlEncoded
    @POST("/mobile/cart/updateNum")
    Call<ResultDO> updateNum(@Field("cartId") Long cartId,@Field("productNum") Integer productNum);

    /**
     * 删除购物车数量
     * @param
     * @return
     */
    @FormUrlEncoded
    @POST("/mobile/cart/deleteCart")
    Call<ResultDO> deleteCart(@Field("cartIds") String cartId);

   /* *//**
     * 用户提现账户列表
     * @param
     * @return
     *//*
    @FormUrlEncoded
    @POST("/mobile/bankAccount/bind")
    Call<ResultDO> bankAccoun(@Field("bankName") Integer bankName);
    ?bankName=123&account=122&name=1221&mobile=1212&code=121&logo=121
    *//**
     * 用户提现账户列表
     * @param
     * @return
     *//*
    @FormUrlEncoded
    @POST("/mobile/bankAccount/list")
    Call<ResultDO> bankAccountList(@Field("memberId") Integer memberId);

    *//**
     * 用户提现账户列表
     * @param
     * @return
     *//*
    @FormUrlEncoded
    @POST("/mobile/bankAccount/list")
    Call<ResultDO> bankAccountList(@Field("memberId") Integer memberId);

    *//**
     * 用户提现账户列表
     * @param
     * @return
     *//*
    @FormUrlEncoded
    @POST("/mobile/bankAccount/list")
    Call<ResultDO> bankAccountList(@Field("memberId") Integer memberId);

    *//**
     * 用户提现账户列表
     * @param
     * @return
     *//*
    @FormUrlEncoded
    @POST("/mobile/bankAccount/list")
    Call<ResultDO> bankAccountList(@Field("memberId") Integer memberId);*/



}
